/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package tabelmodel;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import model.Dosis;
import model.EfekSamping;
import model.Indikasi;
import model.KategoriPenyakit;
import model.Kemasan;
import model.Komposisi;
import model.KontraIndikasi;
import model.Obat;
import model.Perhatian;

/**
 *
 * @author Florencia
 */
public class DaftarObatTableModel extends AbstractTableModel {

    private List<Obat> obats = new ArrayList<Obat>();
    private List<KategoriPenyakit> kategoris = new ArrayList<KategoriPenyakit>();
    private List<Komposisi> kompos = new ArrayList<Komposisi>();
    private List<Dosis> dosiss = new ArrayList<Dosis>();
    private List<Indikasi> indik = new ArrayList<Indikasi>();
    private List<KontraIndikasi> kontras = new ArrayList<KontraIndikasi>();
    private List<EfekSamping> efeks = new ArrayList<EfekSamping>();
    private List<Perhatian> perhati = new ArrayList<Perhatian>();
    private List<Kemasan> kemas = new ArrayList<Kemasan>();

    public DaftarObatTableModel(List<Obat> Obat, List<KategoriPenyakit> kategori, List<Komposisi> komposisi,
            List<Dosis> dosis, List<Indikasi> indikasi, List<KontraIndikasi> kontraIndikasi,
            List<EfekSamping> efek, List<Perhatian> perhatian, List<Kemasan> kemasan) {
        this.obats = Obat;
        this.kategoris = kategori;
        this.kompos = komposisi;
        this.dosiss = dosis;
        this.indik = indikasi;
        this.kontras = kontraIndikasi;
        this.efeks = efek;
        this.kemas = kemasan;
        this.perhati = perhatian;
    }

    public void deletePerhatian(int row) {
        obats.remove(row);
        kategoris.remove(row);
        kompos.remove(row);
        dosiss.remove(row);
        indik.remove(row);
        kontras.remove(row);
        efeks.remove(row);
        kemas.remove(row);
        perhati.remove(row);
        fireTableRowsDeleted(row, row);
    }

    public void updatePerhatian(int row, Obat obat, KategoriPenyakit kategori, Komposisi komposisi,
            Dosis dosis, Indikasi indikasi, KontraIndikasi kontraIndik,
            EfekSamping efekSamping, Kemasan kemasan, Perhatian perhatian) {
        obats.set(row, obat);
        kategoris.set(row, kategori);
        kompos.set(row, komposisi);
        dosiss.set(row, dosis);
        indik.set(row, indikasi);
        kontras.set(row, kontraIndik);
        efeks.set(row, efekSamping);
        kemas.set(row, kemasan);
        perhati.set(row, perhatian);
        fireTableRowsUpdated(row, row);
    }

    public void addPerhatian(Obat obat, KategoriPenyakit kategori, Komposisi komposisi,
            Dosis dosis, Indikasi indikasi, KontraIndikasi kontraIndik,
            EfekSamping efekSamping, Kemasan kemasan, Perhatian perhatian) {
        obats.add(obat);
        kategoris.add(kategori);
        kompos.add(komposisi);
        dosiss.add(dosis);
        indik.add(indikasi);
        kontras.add(kontraIndik);
        efeks.add(efekSamping);
        kemas.add(kemasan);
        perhati.add(perhatian);
        fireTableRowsInserted(getRowCount() - 1, getColumnCount() - 1);
    }

    public int getRowCount() {
        return obats.size() + kategoris.size() + kompos.size() + dosiss.size()
                + indik.size() + kontras.size() + efeks.size() + kemas.size() + perhati.size();
    }

    public int getColumnCount() {
        return 9;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        Obat a = obats.get(rowIndex);
        KategoriPenyakit b = kategoris.get(rowIndex);
        Komposisi c = kompos.get(rowIndex);
        Dosis d = dosiss.get(rowIndex);
        Indikasi e = indik.get(rowIndex);
        KontraIndikasi f = kontras.get(rowIndex);
        EfekSamping g = efeks.get(rowIndex);
        Kemasan h = kemas.get(rowIndex);
        Perhatian i = perhati.get(rowIndex);
        switch (columnIndex) {
            case 0:
                return a.getNamaObat();
            case 1:
                return b.getNamaKategori();
            case 2:
                while (c != null) {
                    return c.getNamaKomposisi() + "\n";
                }
            case 3:
                while (d != null) {
                    return d.getNamaDosis() + "\n";
                }
            case 4:
                while (e != null) {
                    return e.getNamaIndikasi() + "\n";
                }
            case 5:
                while (f != null) {
                    return f.getNamaKontraIndikasi() + "\n";
                }
            case 6:
                while (g != null) {
                    return g.getNamaEfekSamping() + "\n";
                }
            case 7:
                while (h != null) {
                    return h.getNamaKemasan() + "\n";
                }
            case 8:
                while (i != null) {
                    return i.getNamaPerhatian() + "\n";
                }
            default:
                return "";
        }
    }

    @Override
    public String getColumnName(int column) {
        switch (column) {
            case 0:
                return "NAMA OBAT";
            case 1:
                return "KATEGORI PENYAKIT";
            case 2:
                return "KOMPOSISI";
            case 3:
                return "DOSIS";
            case 4:
                return "INDIKASI";
            case 5:
                return "KONTRA INDIKASI";
            case 6:
                return "EFEK SAMPING";
            case 7:
                return "KEMASAN";
            case 8:
                return "PERHATIAN";
            default:
                return "";
        }
    }
}
